﻿
///////////////////////////////////////////////////////////
///构造函数
///////////////////////////////////////////////////////////
function ClassSoftPhone(softPhoneObject)
{
//    if (softPhoneObject == null || softPhoneObject == '')
//	{
//	    this.softPhoneObject = window.softPhoneObject;
//	}
//	else
//	{
//	    this.softPhoneObject = softPhoneObject;
//	}
//	if(this.softPhoneObject == null)
//	{
//		alert('控件加载失败！');
//		return false;
//    }
    this.softPhoneObject = softPhoneObject;
    this.Url = null;
	this.IP = null;
	this.Port = null;
	this.UserID = null;
	this.UserPWD = null;
	this.UserExt = null;
	this.UserGroup = null;
	this.IsConnect_CTI = 0;
	this.Status = 0;
	this.SeatStatus = 0;
	this.CallID = '';
	this.Caller = '';
	this.Called = '';
	this.ExtDirection = '';
	this.IsDebug = false;
	this.IsBusy = 0;
	this.IsActive = 0;
        this.LastStatus = 0;
	this.IsReady = 0;
	this.IsNotDisturb = 0;
	this.dwFreq = 10;
	this.dwDuration = 5000;
    this.IsPopPage = false;
};


///////////////////////////////////////////////////////////
///检测控件
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.CheckControls = function() {
    if (this.softPhoneObject == null) {
        alert('控件加载失败！');
        return false;
    }
    return true;
};

///////////////////////////////////////////////////////////
///检测控件
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.CheckTelNumber = function(tel) {
    if (tel.length > 4) {
        return false;
    }
    return true;
};
///////////////////////////////////////////////////////////
///检测连接
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.CheckConnect = function() {
    //if (this.IsConnect_CTI == 0) {
        //alert("请先连接CTI服务器!");
        //return false;
    //}
    return true;
};
///////////////////////////////////////////////////////////
///显示测试信息
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ShowTestMessage = function(msg) {
    if (this.IsDebug) {
        var obj = document.all.txtOcxInfo;
        if (obj != null) {
            obj.value = msg;
        }
    }
};
///////////////////////////////////////////////////////////
///连接CTI服务器
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATConnect = function(Url) {
    this.Url = Url;
    if (!this.CheckControls()) {
        return false;
    }
    if (this.Url == null) {
        alert('服务器Url地址不能为空！');
        return false;
    }

    this.softPhoneObject.ATConnect(this.Url);
    return true;
};
///////////////////////////////////////////////////////////
///断开与CTI服务器的连接
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATDisconnect = function() {
    if (!this.CheckControls()) {
        return false;
    }
    this.softPhoneObject.ATDisconnect();
    return true;
};
///////////////////////////////////////////////////////////
///坐席靠工号登录
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATLogin = function(UserID, UserPWD, UserExt) {
    this.UserID = UserID;
    this.UserPWD = UserPWD;
    this.UserExt = UserExt;

    if (!this.CheckControls()) {
        return false;
    }
    if (this.UserID == null) {
        alert('登录工号不能为空！');
        return false;
    }
    if (this.UserPWD == null) {
        alert('登录密码不能为空！');
        return false;
    }
    if (this.UserExt == null) {
        alert('分机号码不能为空！');
        return false;
    }

    try {
        this.softPhoneObject.ATLogin(this.UserID, this.UserPWD, this.UserExt); //工号，密码，分机
    }
    catch (ex)
    {
        
    }
    
    return false;
};

ClassSoftPhone.prototype.ATReset = function() {
    try {
        this.softPhoneObject.ATReset(); //工号，密码，分机
    }
    catch (ex) {

    }
};

///////////////////////////////////////////////////////////
///当前页面重新指向 登录页面 
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ReLogin = function() {
    //    window.parent.window.location.href = '../Logout.aspx';
};
///////////////////////////////////////////////////////////
///坐席退出登录
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATLogout = function() {
    if (!this.CheckControls()) {
        return true;
    }
    return this.softPhoneObject.ATLogout();
};

///////////////////////////////////////////////////////////
///发起呼叫
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATPlaceCall = function(TelNumber) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    if (TelNumber == null || TelNumber == '') {
        alert('被叫号码不能为空！');
        return false;
    }
    this.softPhoneObject.ATMakeCall(TelNumber);
    return true;
};
///////////////////////////////////////////////////////////
///保持呼叫，让对方听音乐
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATHoldCall = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATHoldCall();
    return true;
};
///////////////////////////////////////////////////////////
///恢复呼叫   取回保持
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATRetriveCall = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATRetriveCall();
    return true;
};
///////////////////////////////////////////////////////////
///座席置忙      示忙         ，因暂时离开座位或处理别的事情而不想接电话    
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATSetBusy = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATSetNotReady();
    return true;
};
///////////////////////////////////////////////////////////
///取消置忙   示闲
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATSetNoBusy = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATSetReady();
    return true;
};


///////////////////////////////////////////////////////////
///转接电话，将电话转到分机
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATTranCall = function(DestExt) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    if (DestExt == null) {
        alert('目标分机号不能为空！');
        return false;
    }
    this.softPhoneObject.ATTranCall(DestExt, 1, ''); //DestExt要转的目的分机号
    return true;
};

///////////////////////////////////////////////////////////
///转接电话，将电话转到分机
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATConsult = function(DestExt) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    if (DestExt == null) {
        alert('目标分机号不能为空！');
        return false;
    }
    this.softPhoneObject.ATConsult(DestExt, 1); //DestExt要转的目的分机号
    return true;
};

///////////////////////////////////////////////////////////
///转接电话，将电话转到别的坐席
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATTranCallByAgentId = function(AgentId) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    if (AgentId == null) {
        alert('目标分机号不能为空！');
        return false;
    }
    this.softPhoneObject.ATTranCall(AgentId, 0, ''); //AgentId要转的目的分机号
    return true;
};


///////////////////////////////////////////////////////////
///会议  会议不能实现先和第三方通话，再开启会议的方式
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATConference = function(DestExt) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATConference(DestExt, 1);
    return true;
};

///////////////////////////////////////////////////////////
///会议  会议确认
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATCollabComplete = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATCollabComplete();
    return true;
};


///////////////////////////////////////////////////////////
///会议  会议取销
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATCollabCancel = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATCollabCancel();
    return true;
};

//////////////////////////////////////////////////////////
///会议  会议不能实现先和第三方通话，再开启会议的方式
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATConferenceByAgentId = function(AgentId) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATConference(AgentId, 0);
    return true;
};

///////////////////////////////////////////////////////////
///软摘机
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATAnswer = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATAccept();
    return true;
};
///////////////////////////////////////////////////////////
///软摘机  座席应答后报工号
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATAcceptNumber = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATAcceptNumber();
    return true;
};
///////////////////////////////////////////////////////////
///软摘机  座席应答后报工号(自定义)
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATAcceptNumberCustom = function(numberPort) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATAcceptNumberCustom(numberPort);
    return true;
};
///////////////////////////////////////////////////////////
///软挂机
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATHangup = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATRelease();
    return true;
};

///////////////////////////////////////////////////////////
///转ivr，满意度调查的时候用
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATTranCall_toIVR = function(IvrGroup, comment) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    if (IvrGroup == null) {
        alert('请输入IVR组号！');
        return false;
    }

    this.softPhoneObject.ATTranCall(IvrGroup, 1, comment);
    return true;
};

///////////////////////////////////////////////////////////
///发出声响
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATBeep = function() {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    this.softPhoneObject.ATBeep(this.dwFreq, this.dwDuration);
    return true;
};
///////////////////////////////////////////////////////////
///监听
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATListen = function(userid, ext) {
    if (!this.CheckControls()) {
        return false;
    }
    if (!this.CheckConnect()) {
        return false;
    }
    ///监听所需要的代码
    alert(userid);

    return true;
};

///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.CallStateChanged = function(ani, dnis, state, ucid, direction, stime, etime, dtmf, isconnect) {
    switch (state) {
        case "INITIATING":  //外呼回铃事件
            {
                this.Caller = ani;
                this.Called = dnis;
                this.CallID = ucid;
                this.OnInitiating(ani, dnis, state, ucid);
            }
            break;
        case "ACTIVE":      //接通事件
            {
                this.Caller = ani;
                this.Called = dnis;
                this.CallID = ucid;
                this.OnActive(ani, dnis, state, ucid);
            }
            break;
        case "INACTIVE":    //保持呼叫事件
            {
                this.Caller = ani;
                this.Called = dnis;
                this.CallID = ucid;
                this.OnInActive(ani, dnis, state, ucid);
            }
            break;
        case "ALERTING":    //来电振铃事件
            {
                this.Caller = ani;
                this.Called = dnis;
                this.CallID = ucid;
                this.OnAlerting(ani, dnis, state, ucid);
                this.OnATCallInPopEvent(ani, dnis, ucid, dtmf);
            }
            break;
        case "DISCONNECTED": //挂断事件
            {
                this.OnDisConnected(ani, dnis, state, ucid, direction, stime, etime, dtmf, isconnect);
            }
            break;
        case "NONVIABLE":
            {
                this.OnNonViable(ani, dnis, state, ucid);
            }
            break;
    }

};

///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.AgentStateChanged = function(eventName, state) {
    switch (eventName) {

    case "HealthStatus":
        {
            this.OnLogin(eventName, state);
        }
        break;
    case "ChannelState":
        {
            if (state == "BUSY") {
                this.OnNotReady(eventName, state);
            }
            else if (state == "IDLE") {
                this.OnReady(eventName, state);            
            }
            else {//OCCUPIED
                this.OnUnknow(eventName, state);  
            }
//            switch (state) {
//            case "BUSY":
//                {
//                    this.OnNotReady(eventName, state);
//                }
//                break;
//            case "IDLE":
//                {
//                    this.OnReady(eventName, state);
//                }
//                break;
//            default:
//            }
        }
        break;
    default:
        {

        }
    }
};


///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 接通中
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnInitiating = function(ani, dnis, state, ucid) {

};

///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 接通中
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnInActive = function(ani, dnis, state, ucid) {

};

///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 接通中
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnAlerting = function(ani, dnis, state, ucid) {

};


///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 通话中
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnActive = function(ani, dnis, state, ucid) {

};


///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 断开
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnDisConnected = function(ani, dnis, state, ucid) {

};

///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 断开
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnNonViable = function(ani, dnis, state, ucid) {

};



///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 登录成功
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnLogin = function(eventName, state) {

};


///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 示忙
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnNotReady = function(eventName, state) {

};


///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 示闲
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnReady = function(eventName, state) {

};

///////////////////////////////////////////////////////////
/// 控件消息 处理方法
/// 新消息处理事件  ICClient
/// 示闲
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnUnknow = function(eventName, state) {

};


///////////////////////////////////////////////////////////
///控件消息 当前座席来电弹屏事件  处理方法
///
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATCallInPopEvent = function(caller, called, callid, callType) {
    //var msg = '来电弹屏';
    var msg = "状态=来电弹屏;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);

};



















///////////////////////////////////////////////////////////
///控件消息 全部坐席的状态监控事件 处理方法  需要重写具体的处理方法。
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATChangeMonitoringEvent = function(sender, EventCode, EventData) {

};
///////////////////////////////////////////////////////////
///控件消息 当前座席呼叫状态改变事件 处理方法
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATCallStatusChangeEvent = function(sender, EventCode, EventData, EventStatus) {
    switch (EventStatus) {
    case "01": 							//01: 空闲
        {
            this.OnATIdleStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    case "02": 							//02: 摘机
        {
            this.Caller = this.softPhoneObject.UidCall_Caller;
            this.Called = this.softPhoneObject.UidCall_Called;
            this.CallID = this.softPhoneObject.UidCall_CallId;
            this.OnATAnswerStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    case "03": 							//03: 振铃
        {
            this.Caller = this.softPhoneObject.UidCall_Caller;
            this.Called = this.softPhoneObject.UidCall_Called;
            this.CallID = this.softPhoneObject.UidCall_CallId;
            this.OnATRingStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    case "04": 							//04: 回铃
        {
            this.Caller = this.softPhoneObject.UidCall_Caller;
            this.Called = this.softPhoneObject.UidCall_Called;
            this.CallID = this.softPhoneObject.UidCall_CallId;
            this.OnATRingbackStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    case "05": 							//05: 连接
        {
            this.Caller = this.softPhoneObject.UidCall_Caller;
            this.Called = this.softPhoneObject.UidCall_Called;
            this.CallID = this.softPhoneObject.UidCall_CallId;
            this.ExtDirection = this.softPhoneObject.ExtDirection;
            //				this.StartTime = this.softPhoneObject.UidStatus_stime;
            this.OnATConnectionStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    case "06": 							//06: 断开
        {
            this.OnATDisconnectStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    case "07": 							//07: 摘机
        {
            this.OnATHookStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    case "08": 							//08: 转移
        {
            this.OnATTurnStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    default: 							//	  未知
        {
            this.OnATUnknownStatus(this.Caller, this.Called, this.CallID, this.ExtDirection);
        }
        break;
    }
};
///////////////////////////////////////////////////////////
///控件消息 当前座席状态改变事件 处理方法
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATSeatStatusChangeEvent = function(sender, EventCode, EventData, EventStatus) {
    switch (EventStatus) {
    case "00":
        {
            this.OnATCanceled();
        }
        break;
    case "01":
        {
            this.OnATWorkable();
        }
        break;
    case "02":
        {
            this.OnATBusy();
        }
        break;
    case "03":
        {
            this.OnATHandle();
        }
        break;
    case "04":
        {
            this.OnATLeave();
        }
        break;
    default:
        {

        }
        break;
    }
};
///////////////////////////////////////////////////////////
///空闲
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATIdleStatus = function(caller, called, callid, direction) {
    //var msg = '空闲';
    var msg = "状态=空闲;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///应答
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATAnswerStatus = function(caller, called, callid, direction) {
    //var msg = '应答';
    var msg = "状态=应答;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///振铃
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATRingStatus = function(caller, called, callid, direction) {
    //var msg = '振铃';
    var msg = "状态=振铃;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///回铃
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATRingbackStatus = function(caller, called, callid, direction) {
    //var msg = '回铃';
    var msg = "状态=回铃;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///连接
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATConnectionStatus = function(caller, called, callid, direction) {
    //var msg = '连接';
    var msg = "状态=连接;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);

};
///////////////////////////////////////////////////////////
///断开
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATDisconnectStatus = function(caller, called, callid, direction) {
    //var msg = '断开';
    var msg = "状态=断开;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);

};
///////////////////////////////////////////////////////////
///摘机
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATHookStatus = function(caller, called, callid, direction) {
    //var msg = '摘机';
    var msg = "状态=摘机;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///转移
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATTurnStatus = function(caller, called, callid, direction) {
    //var msg = '转移';
    var msg = "状态=转移;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);

};
///////////////////////////////////////////////////////////
///未知
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATUnknownStatus = function(caller, called, callid, direction) {
    //var msg = '未知';
    var msg = "状态=未知;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///已注销
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATCanceled = function() {
    var msg = '已注销';
    //var msg = "状态=来电弹屏;主叫="+caller+";被叫="+called+";呼叫编号="+callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///可工作
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATWorkable = function() {
    var msg = '可工作';
    //var msg = "状态=来电弹屏;主叫="+caller+";被叫="+called+";呼叫编号="+callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///置忙
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATBusy = function() {
    var msg = '置忙';
    //var msg = "状态=来电弹屏;主叫="+caller+";被叫="+called+";呼叫编号="+callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///事后处理
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATHandle = function() {
    var msg = '事后处理';
    //var msg = "状态=来电弹屏;主叫="+caller+";被叫="+called+";呼叫编号="+callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///离席
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATLeave = function() {
    var msg = '离席';
    //var msg = "状态=来电弹屏;主叫="+caller+";被叫="+called+";呼叫编号="+callid;
    this.ShowTestMessage(msg);
};
///////////////////////////////////////////////////////////
///控件消息 当前座席来电弹屏事件  处理方法
///
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.OnATCallInPopEvent = function(caller, called, callid) {
    //var msg = '来电弹屏';
    var msg = "状态=来电弹屏;主叫=" + caller + ";被叫=" + called + ";呼叫编号=" + callid;
    this.ShowTestMessage(msg);

};
///////////////////////////////////////////////////////////
///控件消息 CTI连接中断事件  处理方法
///////////////////////////////////////////////////////////
ClassSoftPhone.prototype.ATCTIConnectInterrupt = function(sender, EventCode, EventData) {
    alert("本座席与UltraCTI服务器的连接出现故障，请重新登录！时间:" + new Date().toLocaleString() + "\n原因:" + EventData);
};






















